package io.github.annyylxyms.gyncache.command;

import io.github.annyylxyms.gyncache.core.Command;
import io.github.annyylxyms.gyncache.core.GynCache;
import io.github.annyylxyms.gyncache.core.Reply;

/**
 *
 * @author Anny
 * @date 2025/1/15 16:57
 */
public class LindexCommand implements Command {
    @Override
    public String name() {
        return "LINDEX";
    }

    /**
     * 示例
     * 假设有一个列表 mylist，包含以下元素：
     * "one", "two", "three"
     * 执行命令：LINDEX mylist 0
     * 返回结果："one"
     * 如果查询一个超出范围的索引：
     * LINDEX mylist 10
     * 返回结果：(nil)
     * 注意事项：索引是从 0 开始的，负数索引表示从列表末尾开始计数，例如 -1 表示最后一个元素，-2 表示倒数第二个元素等。
     * @param cache
     * @param args
     * @return
     */
    @Override
    public Reply<?> exec(GynCache cache, String[] args) {
        String key = getKey(args);
        int index = Integer.parseInt(getVal(args));
        return Reply.bulkString(cache.lindex(key, index));
    }
}
